Skip to content

fix: update PyPI release workflow to trigger independently of crates.io workflow#2715

Open
dannycjones wants to merge 4 commits into
apache:mainfrom
dannycjones:fix-pypi-release
Open

fix: update PyPI release workflow to trigger independently of crates.io workflow#2715
dannycjones wants to merge 4 commits into
apache:mainfrom
dannycjones:fix-pypi-release

Conversation

@dannycjones

@dannycjones dannycjones commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

What changes are included in this PR?

This change updates PyPI publishing to trigger independently of crates.io workflow.

This does mean that PyPI artifacts will still be published if there is an issue with the crates workflow. This is considered an OK tradeoff for now, given we cannot reuse workflows and RCs should catch issues with publishing ahead of an official release.

Are these changes tested?

No. I did not find a good way to dry-run test the workflow, so I do not have any PyPI equivalent to this: #2705

@dannycjones

dannycjones commented Jun 25, 2026

Copy link
Copy Markdown
Contributor Author

FYI @kevinjqliu @CTTY I'm hoping this is a mid-term fix for the PyPI trusted publishing. We're unblocked for 0.10.0-rc1 but for later releases, I'm hoping this simplifies things.

If not, I think we need an update to the release guide to specifically call out the need for manual workflow dispatch to complete the PyPI RC publish.

@kevinjqliu kevinjqliu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for working on this!

What do you think about making release_python.yml standalone instead? It doesnt look like theres a need for release_python.yml to depend on publish.yml.

As long as both are using the same trigger, both can run independently and we'll produce the same artifacts.

I believe PyPi is already configured with release_python.yml, so no need to change that either (I'll double check this)

EDIT: yep, pypi is configured with release_python.yml already

Repository: apache/iceberg-rust
Workflow: release_python.yml
Environment name: pypi

@dannycjones

Copy link
Copy Markdown
Contributor Author

Thanks for working on this!

What do you think about making release_python.yml standalone instead? It doesnt look like theres a need for release_python.yml to depend on publish.yml.

As long as both are using the same trigger, both can run independently and we'll produce the same artifacts.

I believe PyPi is already configured with release_python.yml, so no need to change that either (I'll double check this)

EDIT: yep, pypi is configured with release_python.yml already

Repository: apache/iceberg-rust
Workflow: release_python.yml
Environment name: pypi

I noticed we could do this too.

My thinking is that we wouldn't want to release the Python bindings if the crate itself couldn't be released (although perhaps we think the same of the Python bindings too). I'm a little wary since we do not do a publish to crates.io until after RC, so if something goes wrong there, we've already published the Python bindings release.

I don't have a strong preference, let me know what you think!

@kevinjqliu

Copy link
Copy Markdown
Contributor

I'm a little wary since we do not do a publish to crates.io until after RC, so if something goes wrong there, we've already published the Python bindings release.

ah, i think that's exactly why we (i?) added the dependency link originally 😄

i prefer to keep them separate and just manually fix/upload if publish.yml fails (thats what we did last time). It would be good to verify that publish.yml can run properly during release. Maybe we can add publishing to crates.io as part of the RC process, the crates can be published as pre-release artifacts.

@dannycjones

Copy link
Copy Markdown
Contributor Author

I'm a little wary since we do not do a publish to crates.io until after RC, so if something goes wrong there, we've already published the Python bindings release.

ah, i think that's exactly why we (i?) added the dependency link originally 😄

i prefer to keep them separate and just manually fix/upload if publish.yml fails (thats what we did last time). It would be good to verify that publish.yml can run properly during release. Maybe we can add publishing to crates.io as part of the RC process, the crates can be published as pre-release artifacts.

OK, sounds good. I'll open an issue on publishing pre-release artifacts as I believe that is supported by crates.io (the rc crate wouldn't be picked up unless explicitly asked for) and rework this PR to be independent of publish.yml.

@dannycjones dannycjones marked this pull request as draft July 1, 2026 12:27
@dannycjones dannycjones marked this pull request as ready for review July 2, 2026 10:35
@dannycjones

Copy link
Copy Markdown
Contributor Author

Applied the updates. @kevinjqliu I have disabled the skip existing flag as I'd like to flag when the RC will not be replaced. I'm hoping rebuilding the RC as rc n+1 is cheap enough before the vote. Let me know what you think.

@dannycjones dannycjones requested a review from kevinjqliu July 2, 2026 10:37
@dannycjones dannycjones changed the title fix: update release workflow to publish to PyPI in the same workflow instead of workflow call fix: update PyPI release workflow to trigger independently of crates.io workflow Jul 2, 2026
with:
version: "0.9.3"
enable-cache: true
enable-cache: false # Do not use cache for release artifacts

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

switching to tags flagged this as a risk. I think its fine to turn off the cache here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix release pyiceberg-core to pypi

2 participants